Complex software systems are often developed and analyzed based on models created by a modeling language. Modeling languages allow a developer of the complex system to visualize and create various models of the components included in the complex system. Conventional modeling languages include object-oriented modeling languages such as, for example, Unified Modeling Language (UML). Traditional modeling languages are limited in scope or functionality. Therefore, some modeling languages allow for the creation of modeling profiles. These modeling profiles provide semantic extensions to the respective modeling language.
Modeling templates may be generated for exchanging models created in the modeling language and modeling profiles. These modeling templates are often created using template languages. Traditionally, modeling templates are used as a model interchange between modeling applications.